package cn.bass.marketing.common.resp;

import lombok.Builder;
import lombok.Getter;


@Getter
@Builder
public class CommonError<T> {

  /**
   * 错误代码
   */
  private String code;

  /**
   * 错误信息
   */
  private String msg;

  /**
   *
   */
  protected T data;


  /**
   * 获取基本错误
   *
   * @return 错误
   */
  public static CommonError<Object> error() {
    return CommonError.builder().code("-100").msg("处理失败").build();
  }

  /**
   * 获取基本错误
   *
   * @param msg 错误信息
   * @return 错误
   */
  public static CommonError<Object> error(String msg) {
    return CommonError.builder().code("-100").msg(msg).build();
  }

  /**
   * 获取基本错误
   *
   * @param msg 错误信息
   * @return 错误
   */
  public static <T> CommonError<Object> error(String msg, T data) {
    return CommonError.builder().code("-100").msg(msg).data(data).build();
  }

  /**
   * 获取授权错误
   *
   * @return 错误
   */
  public static CommonError<Object> codeError() {
    return CommonError.builder().code("-200").msg("授权错误").build();
  }

  /**
   * 获取授权错误
   *
   * @param msg 错误消息
   * @return 错误
   */
  public static CommonError<Object> codeError(String msg) {
    return CommonError.builder().code("-200").msg(msg).build();
  }

  /**
   * 获取凭证错误
   *
   * @return 错误
   */
  public static CommonError<Object> tokenError() {
    return CommonError.builder().code("-300").msg("凭证错误").build();
  }

  /**
   * 凭证过期
   *
   * @return 错误
   */
  public static CommonError<Object> tokenExpiredError() {
    return CommonError.builder().code("-400").msg("凭证已过期").build();
  }

  /**
   * 获取凭证错误
   *
   * @param msg 错误消息
   * @return 错误
   */
  public static CommonError<Object> tokenError(String msg) {
    return CommonError.builder().code("-300").msg(msg).build();
  }

  /**
   * 凭证过期
   *
   * @param msg 错误消息
   * @return 错误
   */
  public static CommonError<Object> tokenExpiredError(String msg) {
    return CommonError.builder().code("-400").msg(msg).build();
  }

  /**
   * 获取未授权错误
   *
   * @return 错误
   */
  public static CommonError<Object> unauthorizedError() {
    return CommonError.builder().code("401").msg("请求未授权").build();
  }

  public static CommonError<Object> LoginOtherError() {
    return CommonError.builder().code("401").msg("您的用户在另一个地方上线,你被迫下线").build();
  }

  /**
   * 获取权限不足错误
   *
   * @return 错误
   */
  public static CommonError<Object> forbiddenError() {
    return CommonError.builder().code("403").msg("用户权限不足").build();
  }

  /**
   * 获取地址不存在错误
   *
   * @return 错误
   */
  public static CommonError<Object> notFoundError() {
    return CommonError.builder().code("404").msg("请求地址不存在").build();
  }

  /**
   * 获取服务错误
   *
   * @return 错误
   */
  public static CommonError<Object> serviceError() {
    return CommonError.builder().code("500").msg("服务器开小差了").build();
  }

}
